草庐IT

c++ - DrawText VS TextOut Win32

全部标签

c - 有效地为不同的 Windows 版本使用不同的 API

我面临着使用可用的新Windows运行时功能的需要,并回退到新功能不存在的旧功能。代码路径对性能至关重要。如果平台(Windows8/WindowsServer2012)提供,我需要调用GetSystemTimePreciseAsFileTime,如果不存在较新的版本,则回退到GetSystemTimeAsFileTime。我知道我可以使用LoadLibrary和GetProcAddress加载GetSystemTimePreciseAsFileTime如果失败,回退到GetSystemTimeAsFileTime。我担心通过另一层间接调用像这样对性能至关重要的东西对性能的影响。是否有

c++ - 我如何找到 Win32 中的资源泄漏?

运行几个小时后,我的应用程序无法创建新的字体对象:CreateFontIndirect()returnsNULL.我知道如何查找内存泄漏(即使用并行检查器或其他分析器-其中大部分包括泄漏检测)。但是如何定位Win32中的资源泄漏? 最佳答案 为自己准备一份GDIView-这个有用的工具可以显示您的应用程序使用的所有GDI对象,包括字体名称、大小等详细信息。这在过去被证明非常方便。对于Win32应用程序,您可能需要查看WTL框架-它使用轻量级C++类包装GDI对象,为您处理对象删除。 关于

c - Windows 函数的链接错误

我正在尝试测试标准库(kernel32.dll)是否具有其中一项功能。测试代码片段:externvoidCreateProcessA(void);intmain(void){CreateProcessA();return0;}代码编译链接如下:cl/ctest.clinktest.objkernel32.lib这段代码可以用VisualC++很好地编译,但是不能链接:test.obj:errorLNK2019:unresolvedexternalsymbol_CreateProcessAreferencedinfunction_main但是函数CreateProcessA确实存在于ke

c++ - 为什么 Win32 mutex 这么耗时

我一直在通过C/C++阅读Windows的书。在第8章第215页,作者比较了各种同步机制的性能。而且我发现互斥锁的性能很差。当4个线程同时运行时,它花费了超过23秒用于互斥锁同步。为什么Win32mutex这么耗时?我们什么时候可以使用互斥体?PS:我把测试代码贴在了GitHub:https://gist.github.com/985198感谢您的回复。 最佳答案 Win32中的互斥量是一个内核对象,这意味着每次使用它(Wait、Release)都需要一个系统调用来切换到内核模式并返回到用户模式模式。另外,如果您的线程实际上必须等待

c++ - 如何将 Win32 HRESULT 转换为 int 返回值?

我正在用C++编写Windows控制台应用程序,并希望在成功时返回零,在失败时返回有意义的错误代码(即,S_OK应返回0,而E_OUTOFMEMORY应该返回一个不同于E_FAIL等的返回值)。以下方法可行吗?:intwmain(intargc,wchar_t*argv[]){HRESULThr=DoSomething();return(int)hr;}或者有更好的方法吗?也许是我忘记或找不到的标准Win32API函数或宏? 最佳答案 OP希望返回值为零以指示成功。有些成功代码是非零的,所以...if(SUCCEEDED(hr))r

在 Linux 中编译 Windows C 控制台应用程序

我可以在Linux中编译WindowsC控制台应用程序(.exe)吗?(更具体地说,Ubuntu)我很久以前就听说过交叉编译器,但当时对它们不感兴趣。最好的问候 最佳答案 有thispost它提供了一些信息,以及这个duplicatequestion当你使用Ubuntu时,你需要的包是(我认为)mingw32apt-getinstallmingw32然后用i586-mingw32msvc-gcc编译,例如i586-mingw32msvc-gcchelloworld.c-ohelloworld.exe

C Hello world : Code Blocks IDE, Windows 上的 MinGW C 编译器

当您创建新的C项目时,我无法让CodeBlocksIDE编译它创建的helloworldC程序。我已经安装了MinGW,它被IDE识别了。但是当我尝试构建时,我得到以下输出:--------------Build:DebuginTestC3(compiler:GNUGCCCompiler)---------------mingw32-gcc.exe-Wall-g-cC:\Users\jody\codeblocks\testc3\TestC3\main.c-oobj\Debug\main.omingw32-g++.exe-obin\Debug\TestC3.exeobj\Debug\ma

windows - 如何使用 Perl 从 8.3 DOS 路径获取完整的 Win32 路径?

我的问题基本上说明了一切。我得到这个:C:\DOCUME~1\frew\MYDOCU~1\Code\AIRCRA~1\lib\ACD\VALIDA~1.PM我想要这个:C:\DocumentsandSettings\frew\MyDocuments\Code\aircraft_ducting\lib\ACD\Validators.pm我查看了File::Spec::Win32,但似乎没有任何东西可以解决问题。想法?谢谢! 最佳答案 您可以使用Win32::GetLongPathName($path)来自Win32模块。

c - 使用 emscripten 找不到 Windows.h

我正在尝试在Windows上使用Emscripten转换javascript中的C库。我使用了教程here设置emscripten和LLVM/Clang开始。我用VisualStudio2010编译了LLVM,clang的版本是:clang版本3.2(tags/RELEASE_32/final)目标:i686-pc-win32线程模型:posix在命令行上,我写下这行来编译我的文件:C:\emscripten>pythonemcc-v\mypath\myfile.c这是我得到的输出和最终的错误(以及我寻求帮助的原因......)emcc:compilingtobitcodeemcc:c

创建文件作为系统

我试图让系统(而不是用户)运行一个程序来写入文件,但我遇到了麻烦。以用户身份运行我的程序,文件生成正确,但使用>PSExec-smyProgram.exe运行相同的程序,没有生成文件。它似乎在其他方面运行正常,文件打开函数不返回NULL;有什么我必须做的特别的事情才能作为系统写入文件吗?我在Windows764位计算机和WindowsXP32上都遇到了同样的问题。 最佳答案 参数:要传递的参数(注意文件路径必须是目标系统上的绝对路径)您是否使用文件的绝对路径?同时检查文件夹权限,您正在其中运行应用程序。